use prost_build::Config;

fn main() {
    // 将proto文件生成为Rust代码
    Config::new()
        .out_dir("src/pb") //指定生成的 Rust 代码应该放置的目录路径
        //.bytes(&["."]) //配置代码生成器为Protobuf字节类型字段生成Rust bytes::bytes字段。 本例中，Person::data原本为Vec<u8>类型，指定后为bytes类型
        .btree_map(&["metadata"]) //指定某个字段的map类型为BTreeMap，默认为HashMap
        .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]") //为生成的结构体添加 derive 本例中为所有结构体添加序列化和反序列化功能
        .field_attribute("data", "#[serde(skip_serializing_if = \"Vec::is_empty\")]") //为某个字段添加属性 本例中为Person::data添加属性，跳过空Vec的序列化
        .compile_protos(&["person.proto"], &["."]) //proto文件的名称 - proto文件所在的目录路径
        .unwrap(); 
}